lexer grammar AnalizadorANTLRLexer;

options {
  language = Java;
}

@header {package PL.practica6;}

@members{

ArrayList <RecognitionException> errores = new ArrayList<RecognitionException>();

public boolean listaVacia (){
    if (errores.isEmpty()){
      return true;
    }else
      return false;
}

public ArrayList getListaErrores(){return errores;}


@Override
public void reportError (RecognitionException e){
  System.out.println (getErrorMessage(e, getTokenNames()));
  errores.add(e);
}

}

  HEADER : 'header';
  OPTIONS : 'options';
  PARSER : 'parser';
  GRAMMAR : 'grammar';
  IMPORT : 'import';
  PACKAGE : 'package';
  MEMBERS : 'members';
  ARROBA : '@';
  ABRIRLLAVE: '{';
  CERRARLLAVE : '}';
  COMENTARIO: '/*' (options {greedy=false;}:.)* '*/'{skip();};
  fragment NUEVA_LINEA: '\r\n' ;
  COMENTARIOlINEA : '//' (options {greedy=false;}:.)* NUEVA_LINEA {skip();};
  BLANCO: (' '|'\t'|NUEVA_LINEA) {skip();};
  CARACTER : '\'' (LETRAMAYUSCULA|LETRAMINUSCULA|DIGITO) '\'';
  fragment DIGITO: '0'..'9';
  fragment LETRAMINUSCULA : ('a'..'z')|'_';
  fragment LETRAMAYUSCULA : ('A'..'Z')|'_';
  fragment LETRA : ('a'..'z')|('A'..'Z')|'.';
  IDENT : LETRA (LETRA|DIGITO)+;
  OR : '|';
  SEPARADOR: ';';
  DOSPUNTOS: ':';
  fragment ASTERISCO: '*';
  fragment INTERROGANTE : '?';
  fragment SUMA : '+';
  OPERADORUNITARIO : ASTERISCO |INTERROGANTE | SUMA;
  ABRIRPARENTESIS : '(';
  CERRARPARENTESIS : ')';
  IDENTREGLA : LETRAMINUSCULA (LETRAMAYUSCULA|LETRAMINUSCULA|DIGITO)+;
  IDENTTOKEN : LETRAMAYUSCULA (LETRAMAYUSCULA|LETRAMINUSCULA|DIGITO)+;
  IGUAL : '=';